#ifndef __LINKLIST_H
#define __LINKLIST_H

// 链表节点
typedef struct node 
{
    int data;
    struct node *next;
}listnode, *linklist;


// 初始化一个不带头节点空链表
// head --> NULL
linklist init_list(void);
// 新建节点
linklist new_node(int data);

bool is_empty(linklist head);

// 尾插法新增节点
void list_add_tail(linklist *phead, linklist new);


// 返回指定数据data的上一个节点的指针
// 若指定数据data在链表首位，则返回NULL
// 若没有指定数据data，则返回NULL
linklist find_prev_node(linklist head, int data);


// 剔除指定数据的节点
linklist list_del(linklist *phead, int data);

// 遍历
void show_list(linklist head);


#endif